const express = require('express')
// 引入md5加密工具包
const md5 = require('md5')
// 引入to.js用于捕获错误
const {
    to
} = require('await-to-js')
// 引入UserModel表
const UserModel = require('../db/models/UserModel')
// 引入状态码
const {
    FAILED,
    SUCCESS
} = require('../utils/contants')
// 引入解析token的工具函数
const verifyToken = require('../middlewares/verifyToken')
// 用于生成token的函数
const {
    getToken
} = require('../utils/tokenUtils')

// 创建路由器
const router = express.Router()

// 登录
router.post('/login', async (req, res) => {
    const {
        username,
        pwd
    } = req.body
    const [err, data] = await to(UserModel.findOne({
        username,
        pwd: md5(pwd)
    }))
    const token = getToken(data._id)
    // 如果有异常则返回错误信息
    if (err) {
        res.json({
            code: FAILED,
            message: '用户名或密码错误!'
        })
    } else { //如果有数据则返回给前端
        res.json({
            code: SUCCESS,
            data: {
                data,
                token
            },
            message: '登录成功~'
        })
    }
})

// 自动登录
router.get('/info', verifyToken, async (req, res) => {
    const [err, data] = await to(UserModel.findById({
        _id: req.userId
    }))
    if (err) {
        res.json({
            code: FAILED,
            message: '用户不存在!'
        })
    } else {
        res.json({
            code: SUCCESS,
            data,
            message: '自动登录成功~'
        })
    }
})

// 退出登录
router.get('/logout', verifyToken, (req, res) => {
    // 清除保存在后台的当前用户的一些数据  当前没有

    // 返回成功响应
    res.json({
        code: SUCCESS,
        message: '退出成功!'
    })
})

module.exports = router